package mes.kanban.service;

import java.util.List;

import org.springframework.transaction.annotation.Transactional;

import mes.kanban.entity.MesRoleAndJob;
import mes.kanban.entity.MesRoleAndPermission;
import mes.kanban.entity.MesUserAndRole;
import mes.kanban.util.PageBean;
import mes.kanban.vo.MesRoleAndJobVO;
import mes.kanban.vo.MesRoleAndPermissionVO;
import mes.kanban.vo.MesRoleVO;
import mes.kanban.vo.MesUserAndRoleVO;

/**
 * 角色管理
 * @author zongrui.liu
 *
 */
public interface MesRoleServiceI {

	/**
	 * 分页查询角色列表
	 * @param pageNum
	 * @param pageSize
	 * @return
	 */
	PageBean getRolesForBean(Integer pageNum, Integer pageSize);

	/**
	 * 保存用户角色
	 * @param vo
	 */
	@Transactional
	void save(MesRoleVO vo);

	/**
	 * 修改用户角色
	 * @param vo
	 */
	@Transactional
	void edit(MesRoleVO vo);
	
	/**
	 * 删除角色
	 * @param id
	 */
	@Transactional
	void deleteRoleById(String id);
	

	/**
	 * 查询角色列表
	 * @return
	 */
	List<MesUserAndRoleVO> getRoleList();

	/**
	 * 根据用户Id查询用户角色
	 * @param id
	 * @return
	 */
	List<MesUserAndRoleVO> getRoleListByUserId(String id);
	
	/**
	 * 保存用户及角色
	 * @param userId
	 * @param roleList
	 */
	@Transactional
	void saveUserAndRole(List<MesUserAndRole> roleList);
	
	/**
	 * 查询角色菜单列表
	 * @return
	 */
	List<MesRoleAndPermissionVO> getPermissionList();
	
	/**
	 * 根据角色ID查询菜单权限
	 * @param id
	 * @return
	 */
	List<MesRoleAndPermissionVO> getPermissionByRoleId(String id);
	

	/**
	 * 保存角色及菜单关系
	 * @param permissionList
	 */
	@Transactional
	void saveRoleAndPermission(List<MesRoleAndPermission> permissionList);
	
	/**
	 * 根据角色Id删除菜单权限
	 * @param id
	 */
	@Transactional
	void deleteRoleAndPermissionByRoleId(String id);

	/**
	 * 获取作业列表
	 * @return
	 */
	List<MesRoleAndJobVO> getJobList();

	/**
	 * 根据角色Id获取作业列表
	 * @param id
	 * @return
	 */
	List<MesRoleAndJobVO> getJobByRoleId(String id);

	/**
	 * 保存角色及作业关系
	 * @param permissionList
	 */
	@Transactional
	void saveRoleAndJob(List<MesRoleAndJob> jobList);

	/**
	 * 根据角色Id删除作业权限
	 * @param id
	 */
	@Transactional
	void deleteRoleAndJobByRoleId(String id);

	@Transactional
	void deleteRoleByuserId(String userId);

	

	

}
